<?php

/**
 * 数据操作类
 */
class Request
{
    //允许的请求方式
    private static $method_type = array('get', 'post', 'put', 'patch', 'delete');
    
    //连接信息
    private static $conn;

    //创建数据库的连接
    public static function CreateConn()
    {
        //连接信息初始化
        self::$conn = mysqli_connect("127.0.0.1","root","","test");
        //设置字符集utf8
        mysqli_query(self::$conn,"set Names utf8"); 
    }

    //根据请求方式调用不同函数
    public static function getRequest()
    {
        //获取转为小写的请求方式
        $method = strtolower($_SERVER['REQUEST_METHOD']);

        //如果请求方式在规定的范围里
        if (in_array($method, self::$method_type)) {
            $data_name = $method . 'Data';
            //调用请求方式对应的方法,（将$_REQUEST数组当做参数，$_REQUEST数组中保存着我们传过来的参数）
            return self::$data_name($_REQUEST);
        }
        //否则返回false
        return false;
    }

    //GET 获取数据
    private static function getData($request_data)
    {
        //将传过来的叫user的数据的值赋值给变量user_id
        $user_id = (int)$request_data['user'];
        //如果user_id大于0,查询users表中id=user_id的那条数据，将其返回
        if ($user_id > 0) {
            $sql = "select * from users where id = ".$user_id ;
            $result = mysqli_query(self::$conn,$sql);
            return $result;
        } 
        //否则查询users表中所有数据,并且将其返回
        else {
            $sql ="select * from users ";
            $result = mysqli_query(self::$conn,$sql);
            return $result;
        }
    }

    //POST /user：添加一个user
    private static function postData($request_data)
    {
        //如果传过来的数据中有名为name的
        if (!empty($request_data['name'])) {
            //将传过来的数据分别赋值给变量
            $name = $request_data['name'];
            $sex = $request_data['sex'];
            $age = (int)$request_data['age'];
            //添加语句
            $sql = "INSERT INTO users(name,sex,age)VALUES('$name','$sex',$age)";
            //执行添加语句
            mysqli_query(self::$conn,$sql);
            //查询添加完之后的users表，并且将其返回
            return mysqli_query(self::$conn,"select * from users");
        } 
        //否则返回false
        else
        {
            return false;
        }
    }

    //PUT /user/ID：更新某个指定user的信息（全部信息）
    private static function putData($request_data)
    {
        //获取传过来的id
        $user_id = (int)$request_data['user'];
        //如果id等于0，返回false
        if ($user_id == 0) {
            return false;
        }
        //如果需要的数据全部传过来了
        if (!empty($request_data['name']) && isset($request_data['user']) && isset($request_data['sex']) && isset($request_data['age'])){
            //将传过来的数据分别赋值给变量
            $id = $request_data['user'];
            $name = $request_data['name'];
            $sex = $request_data['sex'];
            $age = $request_data['age'];
            //更新语句
            $sql ="UPDATE users SET name = '$name',sex = '$sex',age = $age where id = $id";
            //执行更新语句
            mysqli_query(self::$conn,$sql);
            //查询更新之后的该条数据，将其返回
            return mysqli_query(self::$conn,"select * from users where id = $id");
        } 
        //否则返回fasle
        else
         {
            return false;
        }
    }

    // //PATCH /user/ID：更新某个指定user的信息（部分信息）
    // private static function patchData($request_data)
    // {
    //     $user_id = (int)$request_data['user'];
    //     if ($user_id == 0) {
    //         return false;
    //     }
    //     if (!empty($request_data['name'])) {
    //         self::$test_user[$user_id]['name'] = $request_data['name'];
    //     }
    //     if (isset($request_data['count'])) {
    //         self::$test_user[$user_id]['count'] = (int)$request_data['count'];
    //     }
    //     return self::$test_user;
    // }

    //DELETE /user/ID：删除某个user
    private static function deleteData($request_data)
    {
        //获取传过来的id
        $user_id = (int)$request_data['user'];
        //如果id==0，返回false
        if ($user_id == 0) {
            return false;
        }
        //删除语句
        $sql = "delete from users where id = ".$user_id;
        //执行删除语句
        mysqli_query(self::$conn,$sql);
        //获取删完一条数据的users表中的所有数据，并且将其返回
        return mysqli_query(self::$conn,"select * from users");
    }
}